package com.gopay.scheduler.service.balance;
import com.gopay.common.cps.dao.acct.AcctBalanceWarningDao;
import com.gopay.common.domain.acps.AcctBalanceWarning;
import com.gopay.common.domain.acps.AcpsAcctTransDtl;

import java.math.BigDecimal;
import java.util.Date;
import java.util.List;

/**
 * @classname:BalanceWarningService
 * @description:余额预警提醒服务类
 * @date:2017/12/18/018
 * @author:PANSHICHAO
 * www.gopay.com.cn Inc.All rights reserved.
 */
public interface BalanceWarningService {
    /**
     * @description: 展示开通余额预警的客户信息
     * @return Object[]数据
     * @author pansc
     */
    List<Object[]> showAllCustCorpInfoByIsBalanceWarningConfig();
    /**
     * @description: 展示开通余额预警的客户信息
     * @param acctId 账户ID
     * @param startDate 起始时间
     * @param endDate 起始时间
     * @return List集合
     * @author pansc
     */
    int showInfoCountByCustIdAndAcctIdAndBewteenDate(String acctId, Date startDate, Date endDate);
    /**
     * @description: 根据账户ID获取余额预警信息
     * @param acctId 账户ID
     * @return AcctBalanceWarning
     * @author pansc
     */
    AcctBalanceWarning showAllAcctBalanceWarningInfoByAcctId(String acctId);
    /**
     * @description: 发送短信或者邮件的余额预警信息
     * @param acctBalanceWarning 余额预警实体类
     * @author pansc
     */
    void sendBalanceWarningToEmailOrPhone(AcctBalanceWarning acctBalanceWarning);

    /**
     * @description: 获取当天的零点和23点59分59秒
     * @return date数组
     * @author pansc
     */
    Date[] getStartDateAndEndDate();
    /**
     * @description: 获取目标账户的当前余额
     * @param  acctId ：目标账号
     * @param  startDate：0点0分0秒
     * @param  endDate:23点59分59秒
     * @return BigDecimal类型的当前余额
     * @author pansc
     */
    BigDecimal showNowsAcctQuotaInfoByAcctIdAndBetweenDate(String acctId, Date startDate, Date endDate);

    void updateBalanceNotifyQuota(AcctBalanceWarning acctBalanceWarning);
}
